#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 1e5 + 5;
int n;
vector<int> ad[maxn];

int dep[maxn];

void dfs(int u,int d,int p){
	dep[u]=d;
	for (int to: ad[u]) {
		if (to==p){
			continue;
		}
		dfs(to,d+1,u);
	}
}


void solve(){
	cin >> n;
	for (int i=1;i<n;i++) {
		int a, b;
		cin>>a>>b;
		ad[a].push_back(b);
		ad[b].push_back(a);
	}
	// 求出最深的那个点
	dfs(1, 0, 0); 
	int mx=0;
	int pos=0;
	for (int i=1;i<=n;i++) {
		if (dep[i]>mx) {
			mx=dep[i];
			pos=i;
		}
	}
	
	// 再次求出最深
	dfs(pos, 0, 0);
	
	for (int i=1;i<=n;i++) {
		mx=max(mx, dep[i]);
	}
	cout << mx << '\n';
}

signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}

